#!/bin/bash

# 安装系统性能分析脚本所需的依赖包
# 作者：Xiao Ru An
# 日期：$(date +"%Y-%m-%d")

# 设置颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 无颜色

# 检查是否以root权限运行
if [ "$(id -u)" -ne 0 ]; then
    echo -e "${RED}错误: 此脚本需要root权限运行。${NC}"
    echo -e "请使用 'sudo $0' 重新运行此脚本。"
    exit 1
fi

# 检测Linux发行版
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$NAME
    VER=$VERSION_ID
else
    echo -e "${RED}错误: 无法检测Linux发行版。${NC}"
    exit 1
fi

echo -e "${BLUE}===== 安装系统性能分析脚本依赖 =====${NC}"
echo -e "检测到操作系统: $OS $VER"

# 安装依赖包
install_dependencies() {
    echo -e "\n${BLUE}正在安装必要的依赖包...${NC}"
    
    case "$OS" in
        *"Ubuntu"*|*"Debian"*)
            echo -e "使用APT包管理器安装依赖..."
            apt-get update
            apt-get install -y procps sysstat net-tools iproute2 lsof bc
            ;;
        *"CentOS"*|*"Red Hat"*|*"Fedora"*)
            echo -e "使用YUM包管理器安装依赖..."
            yum install -y procps-ng sysstat net-tools iproute lsof bc
            ;;
        *"SUSE"*)
            echo -e "使用Zypper包管理器安装依赖..."
            zypper refresh
            zypper install -y procps sysstat net-tools iproute2 lsof bc
            ;;
        *"Arch"*)
            echo -e "使用Pacman包管理器安装依赖..."
            pacman -Sy --noconfirm procps-ng sysstat net-tools iproute2 lsof bc
            ;;
        *)
            echo -e "${YELLOW}警告: 未知的Linux发行版，尝试使用通用方法安装...${NC}"
            if command -v apt-get &> /dev/null; then
                apt-get update
                apt-get install -y procps sysstat net-tools iproute2 lsof bc
            elif command -v yum &> /dev/null; then
                yum install -y procps-ng sysstat net-tools iproute lsof bc
            elif command -v zypper &> /dev/null; then
                zypper refresh
                zypper install -y procps sysstat net-tools iproute2 lsof bc
            elif command -v pacman &> /dev/null; then
                pacman -Sy --noconfirm procps-ng sysstat net-tools iproute2 lsof bc
            else
                echo -e "${RED}错误: 无法找到合适的包管理器。${NC}"
                echo -e "请手动安装以下包: procps, sysstat, net-tools, iproute2, lsof, bc"
                exit 1
            fi
            ;;
    esac
    
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}依赖包安装成功！${NC}"
    else
        echo -e "${RED}依赖包安装失败，请手动安装。${NC}"
        exit 1
    fi
}

# 设置执行权限
set_permissions() {
    echo -e "\n${BLUE}设置脚本执行权限...${NC}"
    
    if [ -f "./system_performance_monitor.sh" ]; then
        chmod +x ./system_performance_monitor.sh
        echo -e "${GREEN}已设置system_performance_monitor.sh的执行权限。${NC}"
    else
        echo -e "${YELLOW}警告: 未找到system_performance_monitor.sh脚本。${NC}"
    fi
}

# 创建输出目录
create_output_dir() {
    echo -e "\n${BLUE}创建性能报告输出目录...${NC}"
    
    mkdir -p ./performance_reports
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}已创建performance_reports目录。${NC}"
    else
        echo -e "${RED}创建performance_reports目录失败。${NC}"
    fi
}

# 主函数
main() {
    install_dependencies
    set_permissions
    create_output_dir
    
    echo -e "\n${GREEN}===== 安装完成 =====${NC}"
    echo -e "您现在可以运行 ./system_performance_monitor.sh 来分析系统性能。"
}

# 执行主函数
main